package com.itheima.filesearchdemo;

import java.io.File;

public class Test {
    public static void main(String[] args) {

        //文件搜索，找出D盘下“logo1.jpg”文件的位置
        File dir = new File("D:\\");
        searchFile(dir, "logo1.jpg");

    }

    /**
     * 递归搜索文件
     *
     * @param dir      文件目录
     * @param fileName 待搜索的文件名
     */
    public static void searchFile(File dir, String fileName) {

        //1.判断极端情况
        if (dir == null || !dir.exists() || !dir.isDirectory() || fileName == null) {
            return;
        }

        //2.获取当前目录下的所有一级文件或文件夹对象
        File[] files = dir.listFiles();

        //3.判断当前目录下是否存在一级文件对象，存在才可以遍历
        if (files != null && files.length > 0) {    //files != null要写在files.length > 0前面，否则可能空指针异常

            //4.遍历一级文件对象
            for (File file : files) {

                //5.判断当前遍历的对象是否是文件
                if (file.isFile()) {
                    //6.判断当前遍历的文件是否是要找的文件
                    if (file.getName().contains(fileName)) {    //模糊匹配
                        System.out.println("找到文件：" + file.getAbsolutePath());
                    }

                } else {
                    //7.判断当前遍历的对象是否是文件夹，是文件夹则继续递归
                    searchFile(file, fileName);
                }
            }

        }
    }
}
